package com.clps.rulesregulations.dao;

import com.clps.rulesregulations.domain.Dept;
import com.clps.rulesregulations.util.ResourceTree;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * 资源数据接口
 *
 */
@Repository
@Mapper
public interface DeptDao {
    /**
     * 根据条件查询资源
     * @param condition
     * @return
     */
    List<Dept> findDeptsByCondition(Map<String, Object> condition);

    /**
     * 根据角色ID查询资源
     * @param roleId
     * @return
     */
    List<Dept> findDeptsByRoleId(Integer roleId);

    /**
     * 加载用户资源
     * @param map
     * @return
     */
    List<Dept> loadUserDepts(Map<String, Object> map);

    /**
     * 查找所有资源
     * @return
     */
    List<Dept> findAll();

    /**
     * 添加资源
     * @param dept
     */
    void addDept(Dept dept);

    /**
     * 删除资源
     * @param deptId
     */
    void delDept(Integer deptId);
    /**
     * 删除资源
     */
    void deleteAll(String[] ArrayDATA_IDS);
    /**
     * 根据资源ID查询资源
     * @param deptId
     * @return
     */
    Dept findDeptById(Integer deptId);
    /**
     * 根据url查询资源
     * @param url
     * @return
     */
    Dept findDeptByUrl(String url);

    /**
     * 更新资源
     * @param dept
     */
    void updateDept(Dept dept);

    /**
     * 查找资源树
     * @return
     */
    LinkedList<ResourceTree> findAllAsTree();

    /**
     * 根据条件查询资源
     *
     * @return
     */
    List<Dept> findMenus();

    /**
     * 添加资源
     *
     * @param menu
     */
    void saveMenu(Dept menu);

    LinkedList<ResourceTree> findMenuTree();
}
